パソコン活用研究PCマニアックの道(アセンブラ、DOS、Windows、旧型PCの活用研究)
FORTRANの入手
おじさんが学生の頃、はやっていた言語がFORTRAN。計算機センターでのコンピューター実習は
FORTRANをやった。今はどうなんだろう。特殊な用途でない限り使うこともないのかなあ。
FORTRANは古い言語だから、ある点で約束が堅苦しい気がする。なんせ、コーディングの書式が
紙テープを意識した規則だったりするから、Visual
Basic
なんかやってる人からみると、中学校の
生徒手帳とかにあった、校則を思い出すかもしれない。
おじさんはFM-8でCP/Mを走らせて、そこでFORTRAN80を使ったりしていたが(ずいぶん古い話
ですが)、今でもパソコン用のFORTRANてあるのかな。時々、FORTRANのパッケージ商品を見かけた
こともあったような気もするが。基本的にパソコンでFORTRANを使う必要はないからな。
さて、このページにわざわざ来た人は、何らかの目的があってFORTRANを探しに来た人だと思いますので、
(どういう理由かは知りませんが)無料でGETできるFORTRANについて少し紹介しておきましょう。
無料でGETできるFORTRANは探すと結構あるんじゃないでしょうか。おじさんのLINK集のコンパイラ関連の
ページから当たれば、いくつか見つかるでしょう。
さしあたり、おじさんはBC FORTRAN(MS-DOS用)と Salford FTN77 Personalを使用してます。
使用していると言うほど使ってはいませんが。
1 BC Fortran77
A.Koestli氏によるフリーのFORTRAN。MS-DOS用です。(DOS窓でも動作する)
使用説明のTEXTは英語と独語のものがついているので、辞書片手に読んで下さい。
おじさんは、Nifty
serveから(FGALPだったかな)ダウンロードしましたが、探せばインターネット上でも
見つかります。
使用方法は簡単です。全ファイルを同じディレクトリに入れておくのが、簡単かと思います。
BCRTSY.EXE というランタイムプログラムがありますので、まずこれを起動してメモリに常駐させます。
コンパイラはBCF.EXE です。
BCF [-Option...] File... で、拡張子が.Bのオブジェクトファイルが生成されます。
リンカはBCS.EXE です。
BCL [-Options...] File...
で、実行ファイルが生成されます。
標準関数とI/Oルーチンのライブラリとして
lib.b
が用意されていますので、いっしょにリンクして下さい。
BCL myfile.b lib.b
のように記述します。
詳細は英文か独文の説明TEXTを読んで下さい。
ちょっとFORTRANの雰囲気を味わうにはいいかと思います。
若干、BUGがあります。おじさんのGETしたバージョンVer1.3b では以下のようなBUGが見つかっています。
DO ... CONTINUE のループの中で
(1)実数の演算をすると無限ループに入る。
(2)READ, WRITE で出力すると無限ループに入る
以上については、 IF 文 と GOTO でループさせねばならない
【実行例】
D:\BCF7713B>type gcm.f INTEGER I,J,K WRITE(5,100) 100 FORMAT('FORTRAN **最大公約数を求める**') WRITE(5,110) 110 FORMAT('2つの整数を ,で区切って入力して下さい') READ(6,*)I,J 10 WRITE(5,200)I,J 200 FORMAT(2(I6,2X)) K=MOD(I,J) I=J J=K IF (K .NE. 0) GOTO 10 WRITE(5,300)I 300 FORMAT('最大公約数 ',I6) END D:\BCF7713B>bcrtsy D:\BCF7713B>bcf gcm.f BC-FORTRAN77 Compiler 1.3b1711, (c)1990 Andre Koestli, Stuttgart File gcm.f D:\BCF7713B>bcl gcm.b lib.b BC-Linker 1.3b1711, (c)1990 Andre Koestli, Stuttgart gcm.b 1060 lib.b 71948 2 Commons 1600 79 Module 72940 frei 298564 gcm.exe 73968 D:\BCF7713B>gcm FORTRAN **最大公約数を求める** 2つの整数を ,で区切って入力して下さい 7728,468 7728 468 468 240 240 228 228 12 最大公約数 12 |
最大公約数を求めるプログラム ユークリッド互除法による ランタイムの起動 コンパイル リンク 実行ファイルの生成 実行 |
2 Salford FTN77
Salford 社のFORTRAN。Personal版は個人利用なら無料でダウンロードできます。
*Salford FTN77の後継バージョンがSilverSoftからFTN95という名前になってダウンロード可能です(2010年)。
Salford FTN77も説明は全て英語です。DOS窓で使えます。
ftn77 がコンパイラです。リンカはslink です。
ftn77.opt というのがConfigurationファイルで、コンパイラはここに記述されたオプションを見て
コンパイルを実行します。
デフォルトのままでは
ftn77 filename
により、オブジェクトファイルが生成されます。ついで
slink filename.obj
で実行ファイルが生成されます
ftn77.opt の中の noLink
というオプションを削除すると
ftn77 filename
だけで、コンパイル後、リンカが自動起動されて、実行ファイルが生成されます。
詳しくはHELPファイル等を見て下さい。
使いやすいFORTRANです。
【実行例】
C:\ftn77>type max.f DIMENSION k(10) WRITE(5,100) 100 FORMAT('FORTRAN **最大値/5個のデータ入力**') i=1 10 READ(6,*)k(i) i=i+1 if (i .le. 5) go to 10 kmax=0 DO 1 i=1,5 if(k(i) .gt. kmax) kmax=k(i) 1 continue WRITE(5,300)kmax 300 FORMAT('MAX ',i6) END C:\ftn77>ftn77 max.f [Salford FTN77/Win32 v4.03, Copyright (c) Salford Software Ltd. 1988-1998] Licensed to: FTN77 Personal Edition Department: Non-commercial use only NO ERRORS [<MAIN@>FTN77 Ver 4.03] C:\ftn77>slink max.obj Creating executable: C:\ftn77\max.exe C:\ftn77>max FORTRAN **最大値/5個のデータ入力** 12 34 35 27 33 MAX 35 |
最大値を求めるプログラム コンパイル リンク 実行 |
最近の企業で使うFORTRANは随分進化をとげたものでしょうが、古典的FORTRANもいいですよね?